// 引入express框架
let express = require("express");
// 应用express
let app = express();
// 引入表单
let form = require("formidable");
// 设置http服务
let server = require("http").Server(app);
// 连接数据库
let mysql = require("mysql");
// 连接cookie
let cookie = require("cookie-parser")
// 使用cookie
app.use(cookie())

// 配置数据库
let con = mysql.createConnection({
    host: "127.0.0.1",
    user: "root",
    password: "root",
    database: "test"
})
// 搭建socket.io服务
let io = require("socket.io")(server);
app.use(express.static("node_modules"));
app.set("view engine", "ejs");
app.set("views", "./views");
//聊天页面
app.get("/", (req, res) => {
    // res.render("qq")
    res.end();
})
// 判断发送时是否登录
app.get("/ajax", (req, res) => {
    if (req.cookies.setcookiedata) {
        res.json({ "code": 200 })
    } else {
        res.json({ "code": 500 })
    }
    res.end();
})
// 登录页面
app.get("/login", (req, res) => {
    res.render("login")
    res.end();
})
// 登录判断
app.post("/dologin", (req, res) => {
    let form2 = new form.IncomingForm();
    form2.parse(req, (err, fields) => {
        if (!err) {
            // 解构fields
            let { username, password, nicheng } = fields;
            // 获取用户名和密码
            let user = [username];
            let pass = [password];
            // 判断用户名和密码是否正确
            let sql = "select * from user where username=?"
            let sql2 = mysql.format(sql, user);
            // 执行sql语句
            con.query(sql2, (error, results) => {
                if (!error) {
                    // 用户名对，并且密码对，才能登录
                    if (results.length > 0 && pass == results[0].password) {
                        // 登录成功，要把用户名赋值给cookie
                        res.cookie("setcookiedata", user)
                        res.render( "qq",{ data: results })
                        // console.log(results);
                        console.log("登录成功");
                    } else {
                        console.log("登录失败");
                    }
                    res.end();
                }

            })
        }

    })

})
// 退出
app.get("/out", (req, res) => {
    res.clearCookie("setcookiedata");
    res.redirect("/login")
    res.end();
})



server.listen(8090)

//连接socket.io服务
io.on("connection", function (socket) {
    // socket.emit("7171", { data: "我是服务器发送的消息" })
    // 接受聊天信息  广播
    socket.on("7171", res => {
        socket.broadcast.emit("7171", res);
        // console.log(res);
    })
    // 接受聊天记录  广播
    socket.on("ltjl", res => {
        socket.broadcast.emit("ltjl", res);
        // console.log(res);
    })
    // 接收前台的成员列表
    socket.on('list', res => {
        // 广播成员列表
        socket.broadcast.emit("list", res);
        // console.log(res);
    })

    // 接受前台的登录弹窗
    socket.on("tanchuang", res => {
        socket.broadcast.emit("tanchuang", res);
        console.log(res);
    })
})